<?php

namespace app\index\controller;

use app\service\WuyunLiuqi;
use think\Controller;

/**
 * 五运六气测试控制器
 */
class WuyunLiuqiTest extends Controller
{
    /**
     * 测试单个日期查询
     * 访问: http://ai.com/index/wuyun_liuqi_test/testSingleQuery
     */
    public function testSingleQuery()
    {
        $service = new WuyunLiuqi();
        
        // 测试当前日期
        $today = date('Y-m-d');
        $result = $service->query($today);
        
        return json([
            'code' => 0,
            'msg' => '查询成功',
            'data' => $result
        ]);
    }
    
    /**
     * 测试特定日期查询
     * 访问: http://ai.com/index/wuyun_liuqi_test/testSpecificDate?date=2024-03-15
     */
    public function testSpecificDate()
    {
        $date = input('date', '2024-03-15');
        $service = new WuyunLiuqi();
        $result = $service->query($date);
        
        return json([
            'code' => 0,
            'msg' => '查询成功',
            'data' => $result
        ]);
    }
    
    /**
     * 测试特殊年份
     * 访问: http://ai.com/index/wuyun_liuqi_test/testSpecialYears
     */
    public function testSpecialYears()
    {
        $service = new WuyunLiuqi();
        
        // 测试几个特殊年份
        $testDates = [
            '2024-06-15', // 甲辰年 - 同天符岁会年
            '2020-03-15', // 庚子年 - 同天符天刑年
            '2022-05-20', // 壬寅年 - 同天符年
            '2008-08-08', // 戊子年 - 天符年
        ];
        
        $results = [];
        foreach ($testDates as $date) {
            $results[] = $service->query($date);
        }
        
        return json([
            'code' => 0,
            'msg' => '批量查询成功',
            'data' => $results
        ]);
    }
    
    /**
     * 测试全年所有时段
     * 访问: http://ai.com/index/wuyun_liuqi_test/testAllPeriods?date=2024-01-01
     */
    public function testAllPeriods()
    {
        $date = input('date', '2024-01-01');
        $service = new WuyunLiuqi();
        $result = $service->getYearAllPeriods($date);
        
        return json([
            'code' => 0,
            'msg' => '查询成功',
            'data' => $result
        ]);
    }
    
    /**
     * 测试六个年份类型
     * 访问: http://ai.com/index/wuyun_liuqi_test/testAllYearTypes
     */
    public function testAllYearTypes()
    {
        $service = new WuyunLiuqi();
        
        // 每种年份类型选一个代表年份
        $testDates = [
            '2020-06-15', // 子年（庚子）
            '2021-06-15', // 丑年（辛丑）
            '2022-06-15', // 寅年（壬寅）
            '2023-06-15', // 卯年（癸卯）
            '2024-06-15', // 辰年（甲辰）
            '2025-06-15', // 巳年（乙巳）
        ];
        
        $results = [];
        foreach ($testDates as $date) {
            $results[] = $service->query($date);
        }
        
        return json([
            'code' => 0,
            'msg' => '六种年份类型测试完成',
            'data' => $results
        ]);
    }
    
    /**
     * 测试一年中不同时段
     * 访问: http://ai.com/index/wuyun_liuqi_test/testDifferentPeriods?year=2024
     */
    public function testDifferentPeriods()
    {
        $year = input('year', '2024');
        $service = new WuyunLiuqi();
        
        // 测试每个时段的中间日期
        $testDates = [
            $year . '-02-15', // 第一时段
            $year . '-04-15', // 第二时段
            $year . '-06-15', // 第三时段
            $year . '-08-15', // 第四时段
            $year . '-10-15', // 第五时段
            $year . '-12-15', // 第六时段
        ];
        
        $results = [];
        foreach ($testDates as $date) {
            $results[] = $service->query($date);
        }
        
        return json([
            'code' => 0,
            'msg' => '不同时段测试完成',
            'data' => $results
        ]);
    }
    
    /**
     * 综合测试报告
     * 访问: http://ai.com/index/wuyun_liuqi_test/comprehensiveTest
     */
    public function comprehensiveTest()
    {
        $service = new WuyunLiuqi();
        
        $report = [
            '测试时间' => date('Y-m-d H:i:s'),
            '当前日期查询' => $service->query(date('Y-m-d')),
            '特殊年份测试' => [
                '2024年甲辰（同天符）' => $service->query('2024-06-15'),
                '2020年庚子（同天符天刑）' => $service->query('2020-06-15'),
                '2008年戊子（天符）' => $service->query('2008-06-15'),
            ],
            '六种年份类型' => [
                '子年/午年' => $service->query('2020-06-15'),
                '丑年/未年' => $service->query('2021-06-15'),
                '寅年/申年' => $service->query('2022-06-15'),
                '卯年/酉年' => $service->query('2023-06-15'),
                '辰年/戌年' => $service->query('2024-06-15'),
                '巳年/亥年' => $service->query('2025-06-15'),
            ],
        ];
        
        return json([
            'code' => 0,
            'msg' => '综合测试完成',
            'data' => $report
        ]);
    }
    
    /**
     * 测试页面（HTML展示）
     * 访问: http://ai.com/index/wuyun_liuqi_test/index
     */
    public function index()
    {
        $service = new WuyunLiuqi();
        $today = date('Y-m-d');
        $result = $service->query($today);
        
        // 预处理数据，避免在 Heredoc 中使用三元运算符
        $isSpecial = $result['special_info']['is_special'] ? '是' : '否';
        
        $html = <<<HTML
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>五运六气查询测试</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
        .container { max-width: 1200px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        h1 { color: #333; border-bottom: 3px solid #1989fa; padding-bottom: 10px; }
        h2 { color: #1989fa; margin-top: 30px; }
        .info-box { background: #f0f9ff; padding: 15px; margin: 10px 0; border-left: 4px solid #1989fa; border-radius: 4px; }
        .label { font-weight: bold; color: #666; }
        .value { color: #333; margin-left: 10px; }
        .special { background: #fff3cd; border-left-color: #ffc107; }
        .period { background: #d4edda; border-left-color: #28a745; }
        .test-links { margin-top: 30px; padding: 20px; background: #e7f3ff; border-radius: 4px; }
        .test-links a { display: inline-block; margin: 5px 10px; padding: 8px 15px; background: #1989fa; color: white; text-decoration: none; border-radius: 4px; }
        .test-links a:hover { background: #40a9ff; }
        table { width: 100%; border-collapse: collapse; margin-top: 15px; }
        th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
        th { background: #1989fa; color: white; }
        tr:hover { background: #f5f5f5; }
    </style>
</head>
<body>
    <div class="container">
        <h1>🌟 五运六气查询系统测试</h1>
        
        <div class="info-box">
            <span class="label">查询日期:</span>
            <span class="value">{$result['date']}</span>
        </div>
        
        <div class="info-box">
            <span class="label">干支年:</span>
            <span class="value">{$result['ganzhi_cn']}</span>
            <span class="label" style="margin-left: 30px;">年份类型:</span>
            <span class="value">{$result['year_type']}</span>
        </div>
        
        <h2>📋 基础信息</h2>
        <div class="info-box">
            <div><span class="label">基础气候:</span><span class="value">{$result['jichu_qihou']}</span></div>
            <div style="margin-top: 10px;"><span class="label">饮食调理:</span><span class="value">{$result['yinshi_tiaoli']}</span></div>
        </div>
        
        <h2>⚠️ 特殊年份信息</h2>
        <div class="info-box special">
            <div><span class="label">是否特殊年份:</span><span class="value">{$isSpecial}</span></div>
            <div style="margin-top: 10px;"><span class="label">说明:</span><span class="value">{$result['special_info']['description']}</span></div>
        </div>
        
        <h2>📅 当前时段信息</h2>
        <div class="info-box period">
            <div><span class="label">时段:</span><span class="value">{$result['current_period']['period']}</span></div>
            <div style="margin-top: 10px;"><span class="label">主气:</span><span class="value">{$result['current_period']['zhuqi']}</span></div>
            <div style="margin-top: 10px;"><span class="label">客气:</span><span class="value">{$result['current_period']['keqi']}</span></div>
            <div style="margin-top: 10px;"><span class="label">气候特点:</span><span class="value">{$result['current_period']['qihou']}</span></div>
            <div style="margin-top: 10px;"><span class="label">健康影响:</span><span class="value">{$result['current_period']['description']}</span></div>
        </div>
        
        <h2>🔬 测试接口</h2>
        <div class="test-links">
            <a href="/index/wuyun_liuqi_test/testSingleQuery" target="_blank">测试当前日期</a>
            <a href="/index/wuyun_liuqi_test/testSpecificDate?date=2024-03-15" target="_blank">测试特定日期</a>
            <a href="/index/wuyun_liuqi_test/testSpecialYears" target="_blank">测试特殊年份</a>
            <a href="/index/wuyun_liuqi_test/testAllPeriods?date=2024-01-01" target="_blank">测试全年时段</a>
            <a href="/index/wuyun_liuqi_test/testAllYearTypes" target="_blank">测试六种年份</a>
            <a href="/index/wuyun_liuqi_test/testDifferentPeriods?year=2024" target="_blank">测试不同时段</a>
            <a href="/index/wuyun_liuqi_test/comprehensiveTest" target="_blank">综合测试</a>
        </div>
        
        <h2>💡 使用说明</h2>
        <div class="info-box">
            <p>1. 点击上方测试链接可以测试不同功能</p>
            <p>2. 所有测试接口返回 JSON 格式数据</p>
            <p>3. 可以通过 URL 参数自定义测试日期</p>
            <p>4. 数据已完整包含六种年份类型的详细信息</p>
        </div>
    </div>
</body>
</html>
HTML;
        
        return $html;
    }
}
